home *** CD-ROM | disk | FTP | other *** search
/ BMUG Revelations / BMUG Revelations.toast / Programming / Programming Languages / Yerk 3.64 / Toolbox Classes / Drvr < prev    next >
Text File  |  1992-05-28  |  2KB  |  63 lines

  1. \ drvr - parameter block for driver interface
  2. \ 02/04/85  cbd  Version 1
  3. \  1/31/87    rfl  added kill:
  4. \  8/16/90    rfl     close: must call kill: first
  5. \  5/28/92    rfl     changed (fdos) to fcalls
  6. Decimal
  7.  
  8. \ basic parameter block for drivers
  9. :CLASS PBDrvr  <Super Object
  10.  
  11.     12 Bytes    Name        \ driver name
  12.     12 Bytes    Header        \ fields for internal use
  13.     Var            IOComp        \ i/o completion ptr
  14.     Int            IOResult    \ return code
  15.     Var            IONamePtr    \ name of drvr
  16.     Int            vRef        \ 22
  17.     Int            IORefNum    \ 24
  18.     Int            csCode        \ 26
  19.     Int            csP1        \ 28
  20.     Int            csP2        \ 30
  21.     Var            IOBuffer
  22.     Var            IOReq
  23.     Var            IOAct
  24.     Int            IOPosMode
  25.     Var            IOOffset
  26.  
  27.     \ ( -- addr )
  28.     :M  FCB:  addr: header   ;M
  29.  
  30.     \ ( addr len -- ) name the driver
  31.     :M  NAME:  ^base 50 erase  addr: name >str255
  32.         put: ioNamePtr   ;M
  33.  
  34.     :M    KILL: addr: header fcall killio,async 0 put: IOResult ;M
  35.  
  36.     \ ( -- fCode )
  37.     :M  OPEN:  addr: header 0 (open)   ;M
  38.  
  39.     \ ( -- fCode fCode )
  40.     :M  CLOSE:  kill: self drop addr: header (close)  ;M
  41.  
  42.     \ ( addr len -- fCode )  read n bytes via the driver
  43.     :M  READ:   addr: header swap rot (read)  ;M
  44.  
  45.     \ ( addr len -- fCode )  write n bytes via the driver
  46.     :M  WRITE:  addr: header swap rot (write) ;M
  47.  
  48.     \ ( cfa:proc addr len -- fCode )  no-wait read requires a completion PROC
  49.     :M  READNW:  put: IOReq  +base put: IOBuffer  >body +base put: IOComp
  50.         addr: header fcall PBRead,ASYNC    ;M
  51.  
  52.     \ ( cfa:proc addr len -- fCode ) no-wait write requires a completion PROC
  53.     :M  WRITENW: put: IOReq  +base put: IOBuffer  >body +base put: IOComp
  54.         addr: header fcall PBWrite,ASYNC  ;M
  55.  
  56.     \ ( -- #bytes )  return actual count of bytes read
  57.     :M  BYTESREAD:  get: IOAct   ;M
  58.  
  59.     \ ( -- IOResult )  leave the current IOResult value
  60.     :M  RESULT:   get: IOResult  ;M
  61.  
  62. ;CLASS
  63.